package com.ssy.lingxi.member.merchant.service.web;

import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.member.merchant.entity.MemberDO;
import com.ssy.lingxi.member.merchant.entity.RoleDO;
import com.ssy.lingxi.member.merchant.model.vo.lifecycle.request.*;
import com.ssy.lingxi.member.merchant.model.vo.lifecycle.response.*;
import org.springframework.http.HttpHeaders;

import java.util.List;

/**
 * 会员整改服务类
 * @author yzc
 * @version 2.0.0
 * @date 2021/5/17
 */
public interface IMemberRectifyService {

    /**
     * 外部状态下拉查询(上级会员)
     * @param headers Http头部信息
     * @return 查询结果
     */
    Wrapper<List<StatusVO>> listMemberRectifyOuterStatus(HttpHeaders headers);

    /**
     * 外部状态下拉查询(下级级会员)
     * @param headers Http头部信息
     * @return 查询结果
     */
    Wrapper<List<StatusVO>> listSubMemberRectifyOuterStatus(HttpHeaders headers);

    /**
     * 会员整改查询 - 会员整改分页列表
     * @param headers Http头部信息
     * @param pageVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<MemberRectifySummaryPageQueryVO>> pageSummaryMemberRectify(HttpHeaders headers, MemberAddRectifySummaryPageVO pageVO);

    /**
     * 会员信息 - 会员详情 - 分页查询会员整改
     * @param member 上级会员
     * @param role 上级会员角色
     * @param subMember 下级会员
     * @param subRole 下级会员角色
     * @param current 当前页
     * @param pageSize 每页行数
     * @return 查询结果
     */
    Wrapper<PageData<MemberRecordRectifyVO>> pageMemberRecordRectify(MemberDO member, RoleDO role, MemberDO subMember, RoleDO subRole, int current, int pageSize);

    /**
     * 待新增整改通知单 - 会员整改分页列表
     * @param headers Http头部信息
     * @param pageVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<MemberRectifyAddPageQueryVO>> pageAddMemberRectify(HttpHeaders headers, MemberAddRectifyPageVO pageVO);

    /**
     * 待确认整改结果 - 会员整改分页列表
     * @param headers Http头部信息
     * @param pageVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<MemberRectifyConfirmPageQueryVO>> pageConfirmMemberRectify(HttpHeaders headers, MemberAddRectifyPageVO pageVO);

    /**
     * 会员整改管理 - 会员整改分页列表
     * @param headers Http头部信息
     * @param pageVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<MemberRectifyManagePageQueryVO>> pageManageMemberRectify(HttpHeaders headers, MemberAddRectifySummaryPageVO pageVO);

    /**
     * 待确认整改结果 - 会员整改详情
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 查询结果
     */
    Wrapper<MemberRectifyVO> getMemberRectify(HttpHeaders headers, CommonIdVO idVO);

    /**
     * 会员整改查询 - 会员整改详情
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 查询结果
     */
    Wrapper<MemberRectifyResultVO> getMemberRectifyResult(HttpHeaders headers, CommonIdVO idVO);

    /**
     * 查询会员整改详情
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 查询结果
     */
    Wrapper<MemberRectifyManageVO> getMemberRectifyManage(HttpHeaders headers, CommonIdVO idVO);

    /**
     * 会员整改管理 - 会员整改修改
     * @param headers Http头部信息
     * @param reportVO 接口参数
     */
    Wrapper<Void> updateReportMemberRectify(HttpHeaders headers, MemberRectifyReportVO reportVO);

    /**
     * 待确认整改结果 - 会员整改新增
     * @param headers Http头部信息
     * @param addVO 接口参数
     * @return 新增结果
     */
    Wrapper<Void> addMemberRectify(HttpHeaders headers, MemberRectifyAddVO addVO);

    /**
     * 确认整改结果 - 会员整改修改
     * @param headers Http头部信息
     * @param updateVO 接口参数
     * @return 修改结果
     */
    Wrapper<Void> updateMemberRectify(HttpHeaders headers, MemberRectifyUpdateVO updateVO);

    /**
     * 待确认整改结果 - 会员整改删除
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 删除结果
     */
    Wrapper<Void> deleteMemberRectify(HttpHeaders headers, CommonIdVO idVO);

    /**
     * 待确认整改结果 - 发送
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> sendMemberRectify(HttpHeaders headers, CommonIdVO idVO);

    /**
     * 待确认整改结果 - 整改
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> rectifyMemberRectify(HttpHeaders headers, CommonIdVO idVO);

    /**
     * 待确认整改结果 - 确认
     * @param headers Http头部信息
     * @param agreeVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> confirmMemberRectify(HttpHeaders headers, CommonAgreeVO agreeVO);
}
